# vim:fileencoding=utf-8:foldmethod=marker

#: Keyboard shortcuts {{{

#: Keys are identified simply by their lowercase Unicode characters.
#: For example: a for the A key, [ for the left square bracket key,
#: etc. For functional keys, such as Enter or Escape, the names are
#: present at Functional key definitions
#: <https://sw.kovidgoyal.net/kitty/keyboard-protocol/#functional>.
#: For modifier keys, the names are ctrl (control, ⌃), shift (⇧), alt
#: (opt, option, ⌥), super (cmd, command, ⌘). See also: GLFW mods
#: <https://www.glfw.org/docs/latest/group__mods.html>

#: On Linux you can also use XKB key names to bind keys that are not
#: supported by GLFW. See XKB keys
#: <https://github.com/xkbcommon/libxkbcommon/blob/master/include/xkbcommon/xkbcommon-
#: keysyms.h> for a list of key names. The name to use is the part
#: after the XKB_KEY_ prefix. Note that you can only use an XKB key
#: name for keys that are not known as GLFW keys.

#: Finally, you can use raw system key codes to map keys, again only
#: for keys that are not known as GLFW keys. To see the system key
#: code for a key, start kitty with the kitty --debug-input option,
#: kitty will output some debug text for every key event. In that text
#: look for native_code, the value of that becomes the key name in the
#: shortcut. For example:

#: .. code-block:: none

#:     on_key_input: glfw key: 0x61 native_code: 0x61 action: PRESS mods: none text: 'a'

#: Here, the key name for the A key is 0x61 and you can use it with::

#:     map ctrl+0x61 something

#: to map Ctrl+A to something.

#: You can use the special action no_op to unmap a keyboard shortcut
#: that is assigned in the default configuration::

#:     map kitty_mod+space no_op

#: If you would like kitty to completely ignore a key event, not even
#: sending it to the program running in the terminal, map it to
#: discard_event::

#:     map kitty_mod+f1 discard_event

#: You can combine multiple actions to be triggered by a single
#: shortcut with combine action, using the syntax below::

#:     map key combine <separator> action1 <separator> action2 <separator> action3 ...

#: For example::

#:     map kitty_mod+e combine : new_window : next_layout

#: This will create a new window and switch to the next available
#: layout.

#: You can use multi-key shortcuts with the syntax shown below::

#:     map key1>key2>key3 action

#: For example::

#:     map ctrl+f>2 set_font_size 20

#: The full list of actions that can be mapped to key presses is
#: available here <https://sw.kovidgoyal.net/kitty/actions/>.

# kitty_mod ctrl+shift

#: Special modifier key alias for default shortcuts. You can change
#: the value of this option to alter all default shortcuts that use
#: kitty_mod.

# clear_all_shortcuts no

#: Remove all shortcut definitions up to this point. Useful, for
#: instance, to remove the default shortcuts.

# action_alias

#: E.g. action_alias launch_tab launch --type=tab --cwd=current

#: Define action aliases to avoid repeating the same options in
#: multiple mappings. Aliases can be defined for any action and will
#: be expanded recursively. For example, the above alias allows you to
#: create mappings to launch a new tab in the current working
#: directory without duplication::

#:     map f1 launch_tab vim
#:     map f2 launch_tab emacs

#: Similarly, to alias kitten invocation::

#:     action_alias hints kitten hints --hints-offset=0

# kitten_alias

#: E.g. kitten_alias hints hints --hints-offset=0

#: Like action_alias above, but specifically for kittens. Generally,
#: prefer to use action_alias. This option is a legacy version,
#: present for backwards compatibility. It causes all invocations of
#: the aliased kitten to be substituted. So the example above will
#: cause all invocations of the hints kitten to have the --hints-
#: offset=0 option applied.

include ./clipboard.conf
include ./scrolling.conf
include ./window_mgmt.conf
include ./tab_mgmt.conf
include ./layout_mgmt.conf
include ./font_size.conf
include ./select_act_visible_txt.conf
include ./misc.conf

#: }}}
